Convert LazyFile/LazyBlob to standalone classes#10913
Merged
markdalgleish merged 4 commits intomainfrom Jan 6, 2026
Merged
Conversation
LazyFile/LazyBlob to standalone classes
Member
|
@markdalgleish If this PR is created to fix what @kentcdodds mentioned in #10872 (comment), an alternative could be to go with something like @alexandredev3's solution from #10889 |
Member
Author
|
@MichaelDeBoey Thanks for the heads up. We were aware of this and explored what a complete solution would look like here: #10904. We've opted instead to simplify the model and avoid this category of issue entirely. |
mjackson
requested changes
Jan 6, 2026
Member
mjackson
left a comment
There was a problem hiding this comment.
Some small changes, but overall this is an excellent PR. Thanks, @markdalgleish!
|
|
||
| // Type assertions: ensure LazyBlob and LazyFile implement all native Blob/File APIs. | ||
| null as unknown as LazyBlob satisfies Record<keyof Blob, unknown> | ||
| null as unknown as LazyFile satisfies Record<keyof File, unknown> |
Co-authored-by: Michael Jackson <michael@jackson.us>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR removes subclassing from
LazyFile/LazyBlobto fix compatibility issues with Bun's native optimizations and updates all consumers to use the new APIs.@remix-run/lazy-fileno longer extends nativeFile/Blob. Instead,LazyFileandLazyBlobimplement the same interface as standalone classes. Users must now call.stream()forResponsebodies or.toFile()/.toBlob()for APIs requiring native types (e.g.FormData).@remix-run/fshas renamedopenFile()toopenLazyFile()and removed thegetFile()alias to explicitly reflect that it returns aLazyFile, not a nativeFile.@remix-run/responsenow accepts any file-like object via a genericFileLikeinterface, supporting both nativeFileandLazyFile.@remix-run/file-storageand@remix-run/static-middlewarehave been updated to use the newopenLazyFile()API.